package com.aliyun.bean;

import com.aliyun.listerner.MyMessageOrderListener;
import com.aliyun.openservices.ons.api.ONSFactory;
import com.aliyun.openservices.ons.api.PropertyKeyConst;
import com.aliyun.openservices.ons.api.order.OrderConsumer;

import java.util.Properties;
public class ConsumerClient {
	Properties properties = new Properties();
	public ConsumerClient(){
		properties.put(PropertyKeyConst.ConsumerId, "CID_cs2");// 您在控制台创建的 Consumer ID
        properties.put(PropertyKeyConst.AccessKey, "LTAIPbDaVfZSlkqo");// AccessKey 阿里云身份验证，在阿里云服务器管理控制台创建
        properties.put(PropertyKeyConst.SecretKey, "1nwgUpL1dbyyRd5wgDxDv0i6dc5k4g");// SecretKey 阿里云身份验证，在阿里云服务器管理控制台创建
        //公有云生产环境：http://onsaddr-internal.aliyun.com:8080/rocketmq/nsaddr4client-internal
        //公有云公测环境：http://onsaddr-internet.aliyun.com/rocketmq/nsaddr4client-internet
        //杭州金融云环境：http://jbponsaddr-internal.aliyun.com:8080/rocketmq/nsaddr4client-internal
        //杭州深圳云环境：http://mq4finance-sz.addr.aliyun.com:8080/rocketmq/nsaddr4client-internal
        properties.put(PropertyKeyConst.ONSAddr,
                "http://onsaddr-internet.aliyun.com/rocketmq/nsaddr4client-internet");//此处以公有云生产环境为例
        properties.put(PropertyKeyConst.SuspendTimeMillis, "100"); // 顺序消息消费失败进行重试前的等待时间 单位(毫秒)
        properties.put(PropertyKeyConst.MaxReconsumeTimes, "20"); // 消息消费失败时的�?��重试次数
	}
    public String getMessage(String text) {
        // 在订阅消息前，必须调�?start 方法来启�?Consumer，只�?��用一次即可�?
        MyMessageOrderListener mo_lis = new MyMessageOrderListener("","");
        OrderConsumer consumer = ONSFactory.createOrderedConsumer(properties);
        consumer.subscribe(
                // Message Topic
                "top_cs",
                // 订阅指定topic下的tags�?
                // 1. * 表示订阅�?��消息
                // 2. TagA || TagB || TagC 表示订阅TagA �?TagC �?TagD 的消�?
                text,
                mo_lis);
        consumer.start();
        while(true){
        	if(mo_lis.getMessage_str()!=null && !"".equals(mo_lis.getMessage_str())){
            	break;
            }
        	try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
        }
        return mo_lis.getMessage_str();
    }
}
